Video coder providing implicit coefficient prediction and scan adaptation for image coding and intra coding of video

ABSTRACT

A predictive video coder performs gradient prediction based on previous blocks of image data. For a new block of image data, the prediction determines a horizontal gradient and a vertical gradient from a block diagonally above the new block (vertically above a previous horizontally adjacent block). Based on these gradients, the encoder predicts image information based on image information of either the horizontally adjacent block or a block vertically adjacent to the new block. The encoder determines a residual that is transmitted in an output bitstream. The decoder performs the identical gradient prediction and predicts image information without need for overhead information. The decoder computes the actual information based on the predicted information and the residual from the bitstream.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/102,235, filed Dec. 10, 2013, now U.S. Pat. No. 9,693,051, and is acontinuation of U.S. patent application Ser. No. 12/956,604, filed Nov.30, 2010, now U.S. Pat. No. 8,625,665 and is a continuation of U.S.patent application Ser. No. 11/216,195, filed Aug. 31, 2005, now U.S.Pat. No. 7,869,502, and is a continuation of U.S. patent applicationSer. No. 10/331,344, filed Dec. 31, 2002, now U.S. Pat. No. 7,092,445,and is a continuation of U.S. patent application Ser. No. 09/942,734,filed Aug. 31, 2001, now U.S. Pat. No. 6,556,625, and is a continuationof U.S. patent application Ser. No. 08/908,044, filed Aug. 11, 1997, nowU.S. Pat. No. 6,341,144, which claims the benefit of U.S. ProvisionalApplication No. 60/038,019, filed Feb. 14, 1997, and U.S. ProvisionalApplication No. 60/026,963, filed Sep. 20, 1996, all of which are hereinincorporated by reference in their entirety.

BACKGROUND OF THE INVENTION

A variety of protocols for communication, storage and retrieval of videoimages are known. Invariably, the protocols are developed with aparticular emphasis on reducing signal bandwidth. With a reduction ofsignal bandwidth, storage devices are able to store more images andcommunications systems can send more images at a given communicationrate. Reduction in signal bandwidth increases the overall capacity ofthe system using the signal.

However, bandwidth reduction may be associated with particulardisadvantages. For instance, certain known coding systems are lossy,they introduce errors which may affect the perceptual quality of thedecoded image. Others may achieve significant bandwidth reduction forcertain types of images but may not achieve any bandwidth reduction forothers. Accordingly, the selection of coding schemes must be carefullyconsidered.

Accordingly, there is a need in the art for an image coding scheme thatreduces signal bandwidth without introducing perceptually significanterrors.

SUMMARY OF THE INVENTION

The disadvantages of the prior art are alleviated to a great extent by apredictive coding scheme in which a new block of image data is predictedfrom three blocks of image data that preceded the new block. For thisnew block, an encoder examines image data of blocks that arehorizontally and vertically adjacent to the new block. The encodercompares the image data of each of the two adjacent blocks to image dataof a third block positioned horizontally adjacent to the verticallyadjacent block (diagonally above the new block). From these comparisons,a horizontal and a vertical gradient is determined. Based on the valuesof the gradients, the encoder predicts the image data of the new blockto be the image data of the horizontally or vertically adjacent blockmost similar to it. The encoder than determines a residual differencebetween the predicted value of the image data and the actual value ofthe image data for the new block and encodes the residual. A decoderperforms an inverse prediction, predicting image data for the new blockbased upon horizontal and vertical gradients and adding the residualthereto to reconstruct the actual image data of the new block. Thisprocess is lossless.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1(a) is a schematic drawing of an encoder in accordance with anembodiment of the present invention; FIG. 1(b) is a schematic drawing ofa decoder in accordance with an embodiment of the present invention.

FIG. 2 illustrates an example of image data processed by the presentinvention.

FIG. 3 is a block diagram of the prediction circuit of FIG. 1.

FIG. 4 is a block diagram of the reconstruction circuit of FIG. 1.

FIG. 5 is a flow diagram of a prediction circuit implemented insoftware.

FIG. 6 is a flow diagram of a second embodiment of a prediction circuitimplemented in software.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1(a) shows an encoder 100 constructed in accordance with a firstembodiment of the present invention. The encoder can include anon-transitory storage medium storing instructions that control aprocessor to perform steps disclosed herein. An analog image signal ispresented to the encoder 100. The image signal is sampled and convertedto a digital signal by an analog to digital (“A/D”) converter 110 usingtechniques known in the art. The A/D converter 110 generates a digitalimage signal for a plurality of pixels of the image. Alternatively, theimage signal may be presented to the encoder as a digital image signal;in this case, the A/D converter 110 is omitted.

The digital image signal is input to a processing circuit 120. The 120may perform a host of functions. Typically, the processing circuit 120filters the image data and breaks the image data into a luminance signalcomponent and two chrominance signal components. Additionally, theprocessing circuit 120 groups image data into blocks of data. Where thedigital input signal represents information for a plurality of pixels ina scanning direction, the digital output of the processing circuit 120represents blocks of pixels, for example, data may be blocked into 8pixel by 8 pixel arrays of image data. The processing circuit 120outputs image data on a macroblock basis. A macroblock typicallyconsists of four blocks of luminance data and two blocks of chrominancedata. The processing circuit 120 may also perform additional functions,such as filtering, to suit individual design criteria.

The output of the processing circuit 120 is input to a transform circuit130. The transform circuit 130 performs a transformation of the imagedata, such as discrete cosine transform (“DCT”) coding or sub-bandcoding, from the pixel domain to a domain of coefficients. A block ofpixels is transformed to a equivalently sized block of coefficients.Coefficients output by DCT coding generally include a single DCcoefficient; the remainder are AC coefficients, some of which arenon-zero. Similarly, coefficients output by sub-band coding representimage characteristics at a variety of frequencies; typically, manycoefficients from sub-band coding are very small. The transform circuit130 outputs blocks of coefficients.

A quantizer 140 scales the signals generated by the transform circuit130 according to a constant or variable scalar value (Q_(P)). Thequantizer 140 reduces bandwidth of the image signal by reducing a numberof quantization levels available for encoding the signal. Thequantization process is lossy. Many small coefficients input to thequantizer 140 are divided down and truncated to zero. The scaled signalis output from the quantizer 140.

The prediction circuit 150 performs gradient prediction analysis topredict scaled DC coefficients of each block. The prediction circuit 150may pass scaled AC coefficients or, alternatively, may predict ACcoefficients of the block. In a preferred mode of operation, theprediction circuit 150 selects between modes of predicting or passing ACcoefficients; in this case, the prediction circuit 150 generates an ACprediction flag to identify a mode of operation. The prediction circuit150 outputs a DC residual signal, AC signals (representing either ACcoefficients or AC residuals) and, an AC prediction flag.

A variable length coder 160 encodes the output of the prediction circuit150. The variable length coder 160 typically is a Huffman encoder thatperforms run length coding on the staled signals. A bitstream outputfrom the variable length coder 160 may be transmitted, stored, or put toother uses as are known in the art.

In the encoder 100, the prediction circuit 150 and the quantizer 140perform functions which are mutually independent. Accordingly, theirorder of operation is largely immaterial. Although FIG. 1 illustratesoutput of the quantizer 140 as an input to the prediction circuit 150,the circuits may be reversed in order. The output of the predictioncircuit 150 may be input to the quantizer 140.

A decoder 200 performs operations that undo the encoding operationdescribed above. The encoder can include a non-transitory storage mediumstoring instructions that control a processor to perform steps disclosedherein. A variable length decoder 260 analyzes the bitstream using acomplementary process to recover a scaled signal. If a Huffman encoderwere used by the encoder 160, a Huffman decoder 260 is used.

A reconstruction circuit 250 performs the identical gradient analysisperformed in the prediction circuit 150. The DC residual signal isidentified and added to a predicted coefficient to obtain a DCcoefficient. Optionally, the reconstruction circuit 250 may identify theAC prediction flag and on the status of that flag, interprets the ACinformation as either AC coefficient information or AC residualinformation. In the event that AC residual information is present, thereconstruction circuit 250 adds the residual signals to correspondingpredicted signals to obtain AC coefficients. The reconstruction circuit250 outputs coefficient signals.

A scalar circuit 240 multiplies the recovered signal by the same scalarused as a basis for division in the quantizer 140. Of course, thosecoefficients divided down to zero are not recovered.

An inverse transformation circuit 230 performs the inversetransformation applied by the transform circuit 130 of encoder 100. If aDCT transformation were performed, an inverse DCT transformation isapplied. So, too, with sub-band coding. The inverse transformationcircuit 230 transforms the coefficient information back to the pixeldomain.

A processing circuit 220 combines luminance and chrominance signals andmay perform such optional features as are desired in particularapplication. The processing circuit 220 outputs digital signals ofpixels ready to be displayed. At this point the signals are fit fordisplay on a digital monitor. If necessary to fit a particularapplication, the signals may be converted by a digital to analogconverter 210 for display on an analog display.

FIG. 2 illustrates the structure of data as it is processed by theprediction circuit. The data output from the transform circuitrepresents a plurality of blocks organized into macroblocks. Eachmacroblock is populated typically by four blocks representing luminancecomponents of the macroblock and two blocks representing chrominancecomponents of the macroblock.

Each block represents coefficients of the spatial area from which theblock was derived. When a DCT transform is applied, a DC coefficient ofDC, of the block is provided at the origin of the block, at the upperleft corner. AC coefficients are provided throughout the block with themost significant coefficients being provided horizontally on the rowoccupied by the DC coefficient and vertically on a column occupied bythe DC coefficient.

FIG. 3 shows a detailed block diagram of the prediction circuit 150. Thequantizer 140 generates scaled DC and AC coefficients. The DCcoefficient may be scaled (DC=DC/Q_(P), typically Q_(P)=8) and is inputto a DC coefficient predictor 300. The DC coefficient predictor performsa gradient analysis.

For any block X, the DC coefficient predictor 300 maintains in memorydata of a block A horizontally adjacent to block X, block C verticallyadjacent to block X and a block B, that is, a block horizontallyadjacent to block C and vertically adjacent to block A, shown in FIG. 2.The DC coefficient predictor compares a DC coefficient of block A(DC_(A)) with a DC coefficient of block B (DC_(B)). The differencebetween the DC coefficients of block A and block B is a verticalgradient The DC coefficient predictor 300 also compares a DC coefficientof block C (DC_(C)) with the DC coefficient of block B (DC_(B)). Thedifference between the coefficients of block C and block B is ahorizontal gradient.

The block associated with the highest gradient from block B is used as abasis of prediction. If the vertical gradient is greater than thehorizontal gradient, it is expected that block A will have highcorrelation with block X, so the DC coefficient predictor 300 employshorizontal prediction in which it uses block A as a basis for predictionof block X. If the horizontal gradient is greater than the verticalgradient, so the DC coefficient predictor 300 employs verticalprediction in which it uses block C as a basis for prediction of blockX. The DC coefficient predictor 300 outputs the DC coefficient of theblock used for prediction (DC_(A) or DC_(C)) to a subtractor 310. The DCcoefficient predictor 300 also generates a hor/vert signal 320indicating whether horizontal prediction or vertical prediction isperformed.

The subtractor 310 subtracts the DC coefficient generated by the DCcoefficient predictor 300 from the DC coefficient of block X to obtain aDC residual signal for block X. The DC residual may be output from theprediction circuit 150 to the variable length encoder 160.

The process described above is employed to predict coefficients ofblocks at the interior of the image to be coded. However, whenpredicting coefficient at the start of a new row of a video objectplane, the previous block for prediction is the last block of the lineabove under the normal process. Typically, there is little correlationbetween these blocks.

Assume that block Y in FIG. 2 is at the starting edge of a video objectplane. No block is horizontally adjacent to block Y in the scanningdirection. Although, image data of a final block in the row above isavailable to be used as the “horizontally adjacent” block, it is hotused for prediction. Instead, the DC coefficient predictor 300artificially sets the DC coefficient values for a horizontally adjacentblock and a block above the horizontally adjacent block to a halfstrength signal. If the DC coefficients are represented by an 8 bitword, the DC coefficient of these ghost blocks is set to 128. The DCcoefficient predictor 300 then performs gradient prediction according tothe process described above.

Furthermore, in another aspect, if any of the blocks A, B or C areoutside of a VOP boundary, their DC values are assigned a value which isused to compute prediction values.

As noted above, the prediction circuit 150 may pass AC coefficientswithout prediction. However, in a preferred embodiment, the predictioncircuit 150 uses the gradient analysis to predict AC coefficients.

When the prediction circuit 150 predicts AC coefficients, only some ofthe AC coefficients may exhibit high correlation between blocks. In thecase of DCT transform coding and horizontal prediction, the only ACcoefficients that are likely to exhibit sufficiently high correlation tomerit prediction analysis are those in the same column as the DCcoefficient (shaded in block A). Accordingly, for each AC coefficient ofblock X in the same column as the DC coefficient (AC_(X)(0,1) throughAC_(X)(0,n)), an AC coefficient predictor 330 generates a predictioncorresponding to the colocated AC coefficient from block A (AC_(A)(0,1)through AC_(A) (0,n)). The predicted AC coefficient is subtracted fromthe actual AC coefficient of block X at a subtractor 340 to obtain an ACprediction residual signal.

In the case of DCT transform coding and vertical prediction, the only ACcoefficients that are likely to exhibit sufficiently high correlation tomerit prediction analysis are those in the same row as the DCcoefficient (shaded in block C). For each AC coefficient of block X inthe same row as the DC coefficient (AC_(X)(1,0) through AC_(X)(n,0)),the AC coefficient predictor 330 generates a prediction corresponding tothe AC coefficient of block C(AC_(C)(1,0) through AC_(C) (n,0)). Thepredicted AC coefficient is subtracted from the actual AC coefficient ofblock X at the subtractor 340 to obtain an AC prediction residualsignal. The AC coefficient predictor is toggled between a horizontalprediction mode and a vertical prediction mode by the hor/vert signal320. Gradient prediction of AC coefficients other than those describedabove need not be performed.

While correlation of AC coefficients between blocks may occur, it doesnot occur always. Accordingly, prediction of AC coefficients does notalways lead to bandwidth efficiencies. Accordingly, in a preferredembodiment, the prediction circuit 150 permits selection of modes ofoperation between a mode wherein AC coefficient prediction is performedand a second mode wherein AC coefficient prediction is not performed. Inthis latter case, AC coefficients from the transform circuit passthrough the prediction circuit without change.

Once the residuals are known, an AC prediction analyzer 350 compares thebandwidth that would be consumed by transmitting the AC residual signalsof the macroblock with the bandwidth that would be consumed bytransmitting the AC coefficients of the macroblock without prediction.The prediction analyzer 350 selects the transmission mode that consumesrelatively less bandwidth. The prediction analyzer 350 generates an ACprediction flag signal 360 to indicate its selection.

Prediction is performed based on “like kind” blocks. When identifyingblocks for prediction of a block of luminance data, only adjacent blocksof luminance data are considered. Any intervening blocks of chrominancedata are ignored for prediction purposes. When predicting coefficientsof the chrominance blocks, only like kind chrominance signals areconsidered for prediction. When predicting data for a block of C_(r)data, one type of chrominance signal, adjacent blocks of C_(r) data areconsidered but intervening blocks of luminance and second typechrominance signal C_(b) data are ignored. Similarly, when predictingdata for a block of C_(b) data, a second type of chrominance signal,adjacent blocks of C_(b) data are considered but intervening blocks ofluminance and C_(r) data are ignored.

The prediction circuit 150 may output a DC residual signal, signalsrepresenting either AC coefficients or AC residuals and an AC predictionflag signal.

An inverse prediction operation is performed in the reconstructioncircuit 250, shown in FIG. 4. For every block X, a DC coefficientpredictor 400 maintains in memory data of an adjacent block A prior toblock X, data of an adjacent block C above block X and data of a block Bprior to block C, the block above block X. The DC coefficient predictor400 compares a DC coefficient of block A with a DC coefficient of blockB to determine the vertical gradient. Further, the DC coefficientpredictor 400 compares a DC coefficient of block C with the DC,coefficient of block B to determine the horizontal gradient. If thehorizontal gradient is greater than, the vertical gradient, the DCcoefficient predictor 400 generates the DC coefficient of block C as abasis for prediction. Otherwise, the DC coefficient predictor 400generates the DC coefficient of block A. The DC coefficient predictor400 also generates a hor/vert signal 420 identifying whether horizontalor vertical prediction is used.

The reconstruction circuit 250 identifies the DC residual signal fromthe input bitstream. An adder 410 adds the DC residual to the DCcoefficient generated by the DC coefficient predictor 400. The adder 410outputs the DC coefficient of block X.

In a preferred embodiment, the reconstruction circuit 250 identifies theAC prediction flag 360 from the input bitstream. If the AC predictionflag 360 indicates that AC prediction was used, the reconstructioncircuit identifies the AC residual signals from the input

15 bitstream and engages an AC coefficient predictor 430. A hor/vertsignal 420 from the DC coefficient predictor identified whether block Aor block C is used as a basis for prediction. In response, the ACcoefficient predictor 430 generates signals corresponding to the ACcoefficients of block A or block C in the same manner as the ACcoefficient predictor 330 of the predictor 150. An adder 440 addspredicted AC coefficients to corresponding residuals and outputsreconstructed AC coefficients.

If the AC prediction flag indicates that AC prediction was not used, thereconstruction circuit 250 identifies the AC coefficient signals fromthe bitstream. No arithmetic operations are necessary to reconstruct theAC coefficients.

Refinements of the DC prediction may be achieved in a preferredembodiment by inducing contribution of some of the perceptuallysignificant AC coefficients from the block of prediction to the DCcoefficient of block X. For example, where block A is used as a basis ofprediction, the predicted DC coefficient of block X may be set as:

DC _(X) =DC _(A)+(4Q _(P)/3)*(AC _(02A) −AC _(01A)/4)

where Q_(P) is the scaling factor of the quantities and AC_(02A) andAC_(01A) are AC coefficients of block A generated by a DCT transform.

Similarly, when block C is used as a basis for prediction, the predictedDC coefficient of block X may be set as:

DC _(X) =DC _(C)+(4Q _(P)/3)*(AC _(20C) −AC _(10C)/4)

where Q_(P) is the scaling factor of the quantities and AC_(20C) andAC_(10C) are AC coefficients of block C generated by a DCT transform.

The prediction and reconstruction process described herein is termed an“implicit” method because no overhead signals are required to identifywhich of the blocks are used for prediction. In operation, coefficientvalues of blocks A, B and C are known at both the encoder 100 and thedecoder 200. Thus, the decoder 200 can reconstruct the predictionoperation of the encoder 100 without additional signaling. In anembodiment where the prediction circuit did not select between modes ofAC prediction, the AC prediction and reconstruction is purely implicit.With the addition of an AC prediction flag in a second embodiment, theprediction process is no longer purely implicit.

The encoding/decoding operation of the prediction and reconstructioncircuit may also be performed by software stored in a non-transitorycomputer-readable storage medium, the software configured to control aprogrammed micro processor or digital signal processor to perform stepsdisclosed herein. The software is stored on a tangible computer readablemedium which stores the instructions for controlling the micro processoraccording to the program.

FIG. 5 illustrates the operation of the software implemented predictioncircuit. The processor compares the DC coefficient of block A to the DCcoefficient of block B to determine the vertical gradient (Step 1000).The processor also compares the DC coefficient of block C to the DCcoefficient of block B to determine the horizontal gradient (Step 1010).

The processor determines whether the vertical gradient is larger thanthe horizontal gradient. (Step 1020). If so, the processor defines theDC residual of block X to be the actual DC coefficient of block X lessthe DC coefficient of block A (Step 1030). If not, the processor definesthe DC residual of block X to be the actual DC coefficient of block Xless the DC coefficient of block C (Step 1040).

In the event the processor also performs AC prediction, the processoroperates as shown in FIG. 6. Steps 1000-1040 occur as discussed abovewith respect to FIG. 5. When the vertical gradient is larger than thehorizontal gradient, the AC coefficients from block A that are in thesame column as the DC coefficient are used as a basis for predicting thecorresponding AC coefficients of block X. Accordingly, for each such ACcoefficient AC_(X)(0,1) through AC_(X)(0,n), block X, the processorcomputes an AC residual set to the actual AC coefficient in block X lessthe corresponding AC coefficient in block A (AC_(A)(0,1) through AC_(A)(0,n) (Step 1035).

When block C is used as a basis of prediction, the AC coefficients inthe same row of the DC coefficients may exhibit correlation betweenblocks. Accordingly, for each AC coefficient AC(i) in the row of blockX, the processor computes a residual (i) set to the actual ACcoefficient in block X less the corresponding AC coefficient in block C(Step 1045).

The processor also determines whether bandwidth savings are achieved bypredicting the AC coefficients. Once all prediction is done for amacroblock, the processor determines whether less bandwidth is occupiedby the encoded coefficients or the residuals (Step 1050). If theresiduals occupy less bandwidth, the processor outputs the residuals(Step 1060). Otherwise, the processor-outputs the coefficients (Step1070).

Additional bandwidth efficiencies are obtained, in a preferredembodiment, by tying a scan direction of the variable length coder 160to the gradient prediction. The encoder scans blocks of coefficients togenerate run-level events that are VLC coded. In natural images,however, a predominant preferred scan direction often exists. Thepresent invention uses the gradient prediction analysis to select one ofthree scan directions to perform run length coding.

TABLE 1 Alternate Horizontal 0 1 2  3 8 9 10 11 4 5 6  7 16 17 18 19 1213 14 15 24 25 26 27 20 21 22 23 32 33 34 35 28 29 30 31 40 41 42 43 3637 38 39 48 49 50 51 44 45 46 47 56 57 58 59 52 53 54 55 60 61 62 63

TABLE 2 Alternate Vertical 0 4 12 20 28 36 44 52 1 5 13 21 29 37 45 53 26 14 22 30 38 46 54 3 7 15 23 31 39 47 55 8 16 24 32 40 48 56 60 9 17 2533 41 49 57 61 10 18 26 34 42 50 58 62 11 19 27 35 43 51 59 63

The first of the scan directions is a alternate horizontal scan, shownin Table 1 above. The alternate horizontal search is employed when thepreferred direction of scan is in the horizontal direction. The scanstarts front the origin, the position of the DC residual of the block.From the origin, the scan traverses three positions in a horizontaldirection (0-3). From the fourth position, the scan jumps down to thefirst position of the second row. From the first position of the secondrow, the scan traverses three positions in the horizontal direction. Thescan then jumps back to the first row of the block and traverses theremainder of the row. At the conclusion of the first row, the scan jumpsto the third row.

The alternate horizontal scan traverses the next five passes (rows 3-8)in an identical manner. From the first position in the i^(th) row, thescan traverses three positions in a horizontal scan direction. The scanthen jumps to the (i-1) row and scans from the fifth position to the endof the row. At the conclusion of the fifth pass, the scan jumps to thefifth position of the eighth row and traverses to the end of that row.

The second of the scan directions is an alternate vertical scan shown inTable 2. The alternate vertical search is employed when the preferreddirection of scan is in the vertical direction. The alternate verticalscan is a complimentary process to the alternate horizontal scan.

From the origin, the semi traverses three positions in a verticaldirection (0-3). From the fourth position, the scan jumps to the firstposition of the second column. From the first position of the secondcolumn, the scan traverses three positions in the vertical direction,The scan then jumps back to the first column of the block and traversesthe remainder of the column. At the conclusion of the first column, thescan jumps to the third row.

The alternate vertical scan traverses the next five passes (columns 3-8)in an identical manner. From the first position in the i^(th) row, thescan traverses three positions in the vertical scan direction. The scanthen jumps to the (i-1) column and scans from the fifth position to theend of the column. At the conclusion of the fifth pass, the scan jumpsto the fifth position of the eighth column and traverses to the end ofthe column.

The third scan direction is a traditional zig-zag scan that is wellknown in the art.

The variable length encoder 160 chooses a scan type according to thetype of AC prediction performed. If the AC prediction flag 360 indicatesthat no AC prediction is performed, the variable length encoder 160performs the traditional zig-zag scan. If the AC prediction flagindicates that AC prediction is performed, the variable length encoder160 looks to the hor/vert signal 320 to determine whether horizontalprediction or vertical prediction is used. In the case of horizontalprediction the vertical-diagonal scan is employed. If verticalprediction is used, the variable length encoder 160 employshorizontal-diagonal scan.

No additional overhead is required to determine the direction of scan.The variable length decoder 260, determines the direction of scan. TheAC prediction flag 360 and the hort/vert signal 420 output fromreconstruction circuit If the AC prediction flag 360 indicates that ACprediction was not performed, the variable length decoder 260 assemblescoefficients according to a zig-zag pattern. If the AC prediction flag360 indicates that AC prediction was performed, the variable lengthdecoder 260 assembles residuals based on the gradient prediction.Residuals are assembled according to the vertical-diagonal scan in thecase of horizontal prediction or by the horizontal-diagonal scan in thecase of vertical prediction.

In another embodiment ,the alternate horizontal and alternate vertical,scans may progress as shown respectively in the following Tables 3 and4:

TABLE 3 Alternate Horizontal 0 1 2 3 4 9 10 11 5 6 7 8 16 17 18 19 12 1314 15 24 25 26 27 20 21 22 23 32 33 34 35 28 29 30 31 40 41 42 43 36 3738 39 48 49 50 51 44 45 46 47 56 57 58 59 52 53 54 55 60 61 62 63

TABLE 4 Alternate Vertical 5 12 20 28 36 44 52 1 6 13 21 29 37 45 53 2 714 22 30 38 46 54 3 8 15 23 31 39 47 55 4 16 24 32 40 48 56 60 9 17 2533 41 49 57 61 10 18 26 32 42 50 58 62 11 19 27 35 43 51 59 63

In a further embodiment, the alternate horizontal and alternate verticalscans may progress as shown respectively in tables 5 and 6 below:

TABLE 5 Alternate Horizontal 0 1 2 3 10 11 12 13 4 5 8 9 17 16 15 14 6 719 18 26 27 28 29 20 21 24 25 30 31 32 33 22 23 34 35 42 43 44 45 36 3740 41 46 47 48 49 38 39 50 51 56 57 58 59 52 53 54 55 60 61 62 63

TABLE 6 Alternate Vertical 0 4 6 20 22 36 38 52 1 5 7 21 23 37 39 53 2 819 24 34 40 50 54 3 9 18 25 35 41 51 55 10 17 26 30 42 46 56 60 11 16 2731 43 47 57 61 12 15 28 32 44 48 58 62 13 14 29 33 45 49 59 63

The alternate horizontal scan of table 5 begins at an origin, theposition of the DC residual of the block (position 0). From the origin,the scan steps three places in the horizontal direction (positions 0 to3). The scan jumps to first position of the second column, below theorigin (position 4). From position 4, the alternate horizontal scansteps one step in the horizontal direction (position 5), then jumps tothe first position of the third row (position 6). The scan steps oneposition in the horizontal direction (position 7), returns to the secondrow at the third position (position 8) and steps across the row oneposition (position 9).

From position 9, the alternate horizontal scan returns to the first rowat the fifth position (position 10). The scan steps across to the end ofthe first row (positions 11 to 13). The scan returns to the second rowat the end of the row (position 14) and scans horizontally across therow toward the interior until the second row is completed (positions 15to 17). From position 17, the alternate horizontal scan returns to thethird, row at the fourth position (position 18), scans one stephorizontally toward the origin (position 19) and jumps to the firstposition of the fourth row (position 20).

From the first position of the fourth row, the alternate horizontal scansteps horizontally one position (position 21), then jumps to the firstposition of the fifth row (position 22) and steps horizontally oneposition again (position 23). The scan returns to the fourth row at thethird position (position 24), scans across one step (position 25) thenreturns to the third row at the fifth position (position 26). The scansteps horizontally across the third row to complete the row (positions27 to 29).

From the end of the third row, the alternate horizontal scan returns tothe fourth row at the fifth position (position 30). The scan stepshorizontally across the fourth row to complete the row (positions 31 to33).

From the end of the fourth row, the alternate horizontal scan returns tothe fifth row at the third position (position 34). The scan steps oneposition in the horizontal direction (position 35), then jumps to thefirst position of the sixth row (position 36). The scan steps across oneposition (position 37), the jumps to the first position of the seventhrow (position 38). The alternate horizontal scan steps across oneposition (position 39), then returns to the sixth row at the thirdposition (position 40). The scan steps one position across (position 41)then returns to the fifth row at the fifth position (position 42). Thealternate horizontal scan steps horizontally across the fifth row tocomplete the row (position 43 to 45).

From the end of the fifth row, the alternate horizontal scan returns tothe sixth row at the fifth position (position 46) and steps horizontallyacross to complete the row (position 47 to 49).

From the end of the sixth row, the alternate horizontal scan returns tothe third position of the seventh row (position 50). The scan stepshorizontally one position (position 51), then jumps to the firstposition of the eighth row (position 52). The scan steps horizontallythree positions (positions 53 to 55), then returns to the seventh row atthe fifth position (position 56). The alternate horizontal scan stepshorizontally across to complete the row (position 57 to 59). From theend of the seventh row, the scan jumps to the fifth position of theeighth row (position 60) and steps horizontally across complete the row(positions 61 to 63).

The alternate vertical scan of table 6 begins at an origin, the positionof the DC residual of the block (position 0). From the origin, the scansteps three places in the vertical direction (positions 0 to 3). Thescan jumps to the first position of the second column, across from theorigin (position 4). From position 4, the alternate vertical scan stepsone step in the vertical direction (position 5), then jumps to the firstposition of the third column (position 6). The scan steps one positionin the vertical direction (position 7), then returns to the secondcolumn at the third position (position 8) and steps one position in thevertical direction (position 9).

From position 9, the alternate vertical scan returns to the first columnat the fifth position (position 10). The scan steps through to the endof the first column (positions 11 to 13). The scan returns to the secondcolumn at the end of the column (position 14) and scans verticallythrough the column toward the interior of the column until the secondcolumn is completed (positions 15 to 17). From position 17, thealternate vertical scan returns to the third column the fourth position(position 18), scans one step vertically toward the top of the column(position 19) and jumps to the first position of the fourth column(position 20).

From the first position in the fourth column, the alternate verticalscan steps vertically one position (position 21), then jumps to thefirst position in the fifth column (position 22) and steps verticallyone position again (position 23). The scan returns to the fourth columnat the third position (position 24), scans one step in the verticaldirection (position 25), then returns to the third column at the fifthposition (position 26). The scan steps vertically through the thirdcolumn to complete the column (positions 27 to 29).

From the end of third column, the alternate vertical scan then returnsto the fourth column at the fifth position (position 30). The scan stepsvertically through the fourth column to complete the column (positions31 to 33).

From the end of the fourth column, the alternate vertical scan returnsto the fifth column at the third position (position 34). The scan stepsone position in the vertical direction (position 35), then jumps to thefirst position of the sixth column (position 36). The scan steps oneposition vertically (position 37), the jumps to the first position ofthe seventh column (position 38). The alternate vertical scan steps oneposition vertically (position 39), then returns to the sixth column atthe third position (position 40). The scan steps one position vertically(position 41) then returns to the fifth position of the fifth column(position 42) and steps vertically across the fifth column to completethe column (positions 43 to 45).

From the end of the fifth column, the alternate vertical scan returns tothe fifth position of the sixth column (position 46) and stepsvertically across the sixth column to complete the column (positions 47to 49).

From the end of the sixth column, the alternate vertical scan returns tothe third position of the seventh column (position 50). The scan stepsvertically one position (position 51), then jumps to the first positionof the eighth column (position 52). The scan steps vertically threepositions (positions 53 to 55), then returns to the fifth position ofthe seventh column (position 56). The scan steps vertically through theseventh column to complete the Column (position 57 to 59). From the endof the seventh column, the alternate vertical scan jumps to the fifthposition of the eighth column (position 60) and steps vertically throughthe eighth column to complete the column (positions 61 to 63).

According to the present inventions video coding of coefficient data maybe made more efficiently an implicit gradient prediction method and by ascanning technique that exploits results obtained by the gradientprediction method. At the time of this writing, the coding scheme of thepresent invention is adopted into the MPEG-4 Video Verification Modeland is being considered for the MPEG-4 video standard.

What is claimed:
 1. A method comprising: receiving, by a processor, aplurality of decoded blocks of image data adjacent to a current block Xof image data, the plurality of decoded blocks of image data beingblocks in a row above or in a column to the left of the current block Xof image data; receiving, by the processor, a first parameter associatedwith one of a plurality of prediction modes; generating, by theprocessor, a second parameter associated with a direction of prediction;and decoding, by the processor, the current block X of image datapredicted from one of the plurality of decoded adjacent blocks of imagedata according to the direction associated with the second parameter. 2.The method of claim 1, wherein the first parameter comprises a flag. 3.The method of claim 2, wherein the flag indicates that the one of theplurality of prediction modes comprises predicting the current block Xfrom one of the decoded blocks adjacent to the current block X.
 4. Themethod of claim 3, wherein the current block X comprises an 8 pixel by 8pixel array.
 5. The method of claim 1, wherein the plurality of decodedblocks is inside a boundary of a video object plane containing thecurrent block X.
 6. A decoder comprising: a processor; a moduleconfigured to control the processor to receive a plurality of decodedblocks of image data adjacent to a current block X of image data, theplurality of decoded blocks of image data being blocks in a row above orin a column to the left of the current block X of image data; a moduleconfigured to control the processor to receive a first parameterassociated with one of a plurality of prediction modes; a moduleconfigured to control the processor to generate a second parameterassociated with a direction of prediction; and a module configured tocontrol the processor to decode the current block X of image datapredicted from one of the plurality of decoded adjacent blocks of imagedata according to the direction associated with the second parameter. 7.The decoder of claim 6, wherein the first parameter comprises a flag. 8.The decoder of claim 7, wherein the flag indicates that the one of theplurality of prediction modes comprises predicting the current block Xfrom one of the decoded blocks adjacent to the current block X.
 9. Thedecoder of claim 8, wherein the current block X comprises an 8 pixel by8 pixel array.
 10. The decoder of claim 6, wherein the plurality ofdecoded blocks is inside a boundary of a video object plane containingthe current block X.
 11. A decoder that decodes according to storedoperations, the operations comprising: receiving a plurality of decodedblocks of image data adjacent to a current block X of image data, theplurality of decoded blocks of image data being blocks in a row above orin a column to the left of the current block X of image data; receivinga first parameter associated with one of a plurality of predictionmodes; generating a second parameter associated with a direction ofprediction the second parameter being associated with the firstparameter; and decoding the current block X of image data predicted fromone of the plurality of decoded adjacent blocks of image data accordingto the direction associated with the second parameter.
 12. The decoderof claim 11, wherein the first parameter comprises a flag.
 13. Thedecoder of claim 12, wherein the flag indicates that the one of theplurality of prediction modes comprises predicting the current block Xfrom one of the decoded blocks adjacent to the current block X.
 14. Thedecoder of claim 13, wherein the current block X comprises an 8 pixel by8 pixel array.
 15. The decoder of claim 11, wherein the plurality ofdecoded blocks is inside a boundary of a video object plane containingthe current block X.